package com.icss.service;

import java.util.Map;

import com.icss.common.util.PageInfoUtil;
import com.icss.common.vo.ApiResponse;
import com.icss.vo.MakeupCategory;
import com.icss.vo.MakeupProduct;

/**
 * Service接口(商品代码) 此接口中只存储数据库表的CRUD
 * 
 * @author 陈岩
 */
public interface IProductDbService
{
	/*----- 分类模块管理开始 -----*/
	/**
	 * 添加一条分类
	 * 
	 * @param demoCate 分类的对象
	 * @return 封装的ApiResponse;详情参见:{@link ApiResponse}},泛型是Object
	 */
	ApiResponse<Object> saveOneCateService(MakeupCategory cate);

	/**
	 * 更新一条分类
	 * 
	 * @param demoCate 分类的对象
	 * @return 封装的ApiResponse;详情参见:{@link ApiResponse}},泛型是Object
	 */
	ApiResponse<Object> updateOneCateService(MakeupCategory cate);

	/**
	 * 删除一条分类
	 * 
	 * @param condMap 删除的条件
	 * @return 封装的ApiResponse;详情参见:{@link ApiResponse}},泛型是Object
	 */
	ApiResponse<Object> deleteOneCateService(Map<String, Object> condMap);

	/**
	 * 查询多条分类
	 * 
	 * @param pageInfoUtil 封装的分页对象;{{@link PageInfoUtil}
	 * @param condMap      搜索的条件
	 * @return 封装的ApiResponse;详情参见:{@link ApiResponse}},泛型是ACate
	 */
	ApiResponse<MakeupCategory> findCondListCateService(PageInfoUtil pageInfoUtil, Map<String, Object> condMap);

	/**
	 * 查询一条分类
	 * 
	 * @param condMap 搜索的条件
	 * @return 封装的ApiResponse;详情参见:{@link ApiResponse}},泛型是ACate
	 */
	ApiResponse<MakeupCategory> findOneCateService(Map<String, Object> condMap);
	/*----- 分类模块管理结束 -----*/
	
	/*----- 商品模块管理开始 -----*/
	/**
	 * 添加一条商品
	 * 
	 * @param demoProduct 商品的对象
	 * @return 封装的ApiResponse;详情参见:{@link ApiResponse}},泛型是Object
	 */
	ApiResponse<Object> saveOneProductService(MakeupProduct product);

	/**
	 * 更新一条商品
	 * 
	 * @param demoProduct 商品的对象
	 * @return 封装的ApiResponse;详情参见:{@link ApiResponse}},泛型是Object
	 */
	ApiResponse<Object> updateOneProductService(MakeupProduct product);
	
	/**
	 * 更新一条商品,(带上传照片)
	 * @param product
	 * @param paramsMap
	 * @return
	 */
	ApiResponse<Object> updateOneProductService(MakeupProduct product, Map<String, Object> paramsMap);

	/**
	 * 删除一条商品
	 * 
	 * @param condMap 删除的条件
	 * @return 封装的ApiResponse;详情参见:{@link ApiResponse}},泛型是Object
	 */
	ApiResponse<Object> deleteOneProductService(Map<String, Object> condMap);

	/**
	 * 查询多条商品
	 * 
	 * @param pageInfoUtil 封装的分页对象;{{@link PageInfoUtil}
	 * @param condMap      搜索的条件
	 * @return 封装的ApiResponse;详情参见:{@link ApiResponse}},泛型是AProduct
	 */
	ApiResponse<MakeupProduct> findCondListProductService(PageInfoUtil pageInfoUtil, Map<String, Object> condMap);

	/**
	 * 查询一条商品
	 * 
	 * @param condMap 搜索的条件
	 * @return 封装的ApiResponse;详情参见:{@link ApiResponse}},泛型是AProduct
	 */
	ApiResponse<MakeupProduct> findOneProductService(Map<String, Object> condMap);
	/*----- 商品模块管理结束 -----*/
}
